package com.jielin.handling.mapper.auditresult;

import com.jielin.handling.entity.auditrecorder.AuditRecoder;
import com.jielin.handling.entity.auditresult.AuditResult;
import com.jielin.handling.entity.tsuspect.TSuspec;
import com.jielin.handling.entity.vo.AuditRecordVo;
import com.jielin.handling.entity.vo.AuditResultVo;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Handler;

import com.jielin.handling.entity.vo.CaseAndSuspectVo;
import org.apache.ibatis.annotations.Param;

public interface AuditResultMapper {
    int deleteByPrimaryKey(String id);

    int insert(AuditResult audit);

    int insertSelective(AuditResult record);

    AuditResult selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(AuditResult record);

    int updateByPrimaryKeyWithBLOBs(AuditResult record);

    int updateByPrimaryKey(AuditResult record);

    List<AuditResult> auditFailed(AuditResult auditresult);//卷宗审核不通过

    List<AuditResult> throughAuditing(AuditResult auditresult);//审核已通过
    
    AuditResult findCaseByCaseCode(String casecode);// 根据案件编号查询案件信息

    List<AuditResult> selectAccessList(AuditResult auditresult);//卷宗出入库详情列表

    int updateAccessLibrary(AuditResult auditresult);//卷宗材料出入柜状态状态变化

    int updataWithdraw(String id);//卷宗撤回状态改变

    int selectEnteringCabinetAudit(Map map);//求该案件入柜得卷宗数量(二次审讯)

    List<AuditResult> selectAuditByCodeOrId(Map map);

    int selectAudit(Map map);//求该案件卷宗未入柜数量(二次审讯)

    String  selectDrawerCode(Map map);//求所有卷宗的柜号字符串拼接(二次审讯)
    
	String selectMaterialPassRate(String unitCode);// 统计该单位民警材料通过

	List<AuditResultVo> selectMaterialGroupByPolice(@Param("unitCode") String unitCode,
			@Param("policeCode") String policeCode, @Param("policeName") String policeName);// 统计该单位民警材料通过率列表

	AuditResultVo selectMaterialByPoliceId(String policeId);// 查询该民警的材料通过数与不通过数据

    List<AuditResult> selectMaterialByCaseCode(AuditResult auditResult);//根据案件编号查询案件关联所有卷宗信息

    List<AuditResult> selectMaterialByAccessLibrary(AuditResult auditResult);//根据案件编号查询案件关联的卷宗状态为未入柜卷宗信息

    List<AuditResult> selectMaterialByAccessLibrarys(AuditResult auditResult);

    List<AuditResult> selectDosserList(Map map);//根据案件编号获取该案件下面的卷宗,嫌疑人姓名,登记时间下拉框

    List<AuditResult> selectSuspectDosserList(Map map);

    CaseAndSuspectVo selectCaseAndSuspect(@Param("caseCode") String caseCode,@Param("idValue") String idValue);//根据案件编号和嫌疑人身份证号查询卷宗和案件的详情信息

    List<AuditResult> selectByCaseCode(String caseCode);//根据案件编号查询案件下所有的卷宗信息(以案件为单位)

    List<AuditResult> selectAllAuditByUnitCode(AuditRecoder auditRecoder);//根据案件编号查询案件下所有的卷宗信息(以案件为单位)

    int insertAuditRecorde(AuditResult auditResult);//审核结果记录

    int selectAuditCount(Map map);//统计该类型卷宗数量

    int selectAvCount(@Param("caseCode") String caseCode,@Param("suspectId") String suspectId,@Param("policeId")String policeId);//查询该案件已经关联的所有卷宗数量

    List<AuditResult> selectAllAudit(String caseCode);//求案件下面的所有卷宗

    List<AuditResult>  selectAllAuditByPoliceId(String policeId);//根据民警id查询民警所有卷宗

    List<AuditResult> selectAuditDetailsByCasecode(AuditResult vo);//根据案件编号查询所偶有卷宗关联情况(执法音视频关联二级页面)

    List<AuditResult> selectSuectByAccessLibrary(Map map);//根据案件编号查询案件关联的卷宗状态为4种状态的人员下拉框

    List<AuditResult>  selectCasecodeInCabin(@Param("handleUnitCode") String  handleUnitCode,@Param("drawerCode") String drawerCode);//根据单位编号查询案管柜里面卷宗所对应的案件

    List<CaseAndSuspectVo> selectStateInCabin(String handleUnitCode);//根据单位编号查询主柜案管柜的状态

    List<CaseAndSuspectVo> selectStateInViceCabin(String handleUnitCode);//根据单位编号查询副柜案管柜的状态

    CaseAndSuspectVo selectCountInCabin(String handleUnitCode);//根据单位编号查询柜子未使用和使用的个数

    List<CaseAndSuspectVo> selectCabinetNumber(String id);//根据单位编号查询柜子号码

    List<TSuspec> waitCheckSuspectList(@Param("unicode") String unicode,@Param("caseCode") String caseCode,@Param("materialStatus") String materialStatus);//待审核文件嫌疑人下拉框








}